{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 卡尔曼滤波行人状态估计\n",
    "\n",
    "来自博客https://adamshan.blog.csdn.net/article/details/78248421"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先我们看一下卡尔曼滤波的整个流程，其实在实际的论文和资料中，预测矩阵通常使用  F 来表示,测量矩阵通常使用 H  表示（,卡尔曼增益通常使用 K 来表示,下面是文献材料中通常意义的卡尔曼滤波过程：\n",
    "\n",
    "![](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcxMDE2MTIyNzUxMTk3?x-oss-process=image/format,png)\n",
    "\n",
    "\n",
    "注意：公式还包含一项： B μ  ,这一项是指我们在追踪一个物体的状态的时候把它内部的控制也考虑进去了，这在行人，自行车，其他汽车的状态估计问题中是无法测量的，所以在这个问题中我们设置 B μ 为 0."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "载入库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy.stats import norm\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "%matplotlib inline\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接着我们初始化行人状态x, 行人的不确定性（协方差矩阵）P，测量的时间间隔dt，处理矩阵F以及测量矩阵H："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.matrix([[0.0,0.0,0.0,0.0]]).T \n",
    "P = np.diag([1000.0,1000.0,1000.0,1000.0])\n",
    "\n",
    "dt = 0.1  # 滤波步长\n",
    "\n",
    "F = np.matrix([[1.0, 0.0, dt, 0.0],\n",
    "        [0.0, 1.0, 0.0, dt],\n",
    "        [0.0, 0.0, 1.0, 0.0],\n",
    "        [0.0, 0.0, 0.0, 1.0]])\n",
    "\n",
    "H = np.matrix([[0.0, 0.0, 1.0, 0.0],\n",
    "        [0.0, 0.0, 0.0, 1.0]])\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "计算测量过程的噪声的协方差矩阵R和过程噪声的协方差矩阵Q："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.09 0.  ]\n",
      " [0.   0.09]] (2, 2)\n"
     ]
    }
   ],
   "source": [
    "\n",
    "ra = 0.09\n",
    "R = np.matrix([[ra, 0.0],\n",
    "        [0.0, ra]])\n",
    "print(R, R.shape)\n",
    "\n",
    "sv = 0.5\n",
    "G = np.matrix([[0.5*dt**2],\n",
    "        [0.5*dt**2],\n",
    "        [dt],\n",
    "        [dt]])\n",
    "Q = G*G.T*sv**2\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "定义一个单位矩阵："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1. 0. 0. 0.]\n",
      " [0. 1. 0. 0.]\n",
      " [0. 0. 1. 0.]\n",
      " [0. 0. 0. 1.]] (4, 4)\n"
     ]
    }
   ],
   "source": [
    "I = np.eye(4)\n",
    "print(I, I.shape)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "随机生成一些数据\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2, 200)\n",
      "Standard Deviation of Acceleration Measurements=1.02\n",
      "You assumed 0.09 in R.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1d09e000ee0>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1152x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "m = 200  # Measurements\n",
    "vx = 20  # in X\n",
    "vy = 10  # in Y\n",
    "\n",
    "mx = np.array(vx+np.random.randn(m))\n",
    "my = np.array(vy+np.random.randn(m))\n",
    "measurements = np.vstack((mx, my))\n",
    "\n",
    "print(measurements.shape)\n",
    "print('Standard Deviation of Acceleration Measurements=%.2f' % np.std(mx))\n",
    "print('You assumed %.2f in R.' % R[0, 0])\n",
    "\n",
    "fig = plt.figure(figsize=(16, 5))\n",
    "plt.step(range(m), mx, label='$\\dot x$')\n",
    "plt.step(range(m), my, label='$\\dot y$')\n",
    "plt.ylabel(r'Velocity $m/s$')\n",
    "plt.title('Measurements')\n",
    "plt.legend(loc='best', prop={'size': 18})\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "结果值保存"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "xt = []\n",
    "yt = []\n",
    "dxt = []\n",
    "dyt = []\n",
    "Zx = []\n",
    "Zy = []\n",
    "Px = []\n",
    "Py = []\n",
    "Pdx = []\n",
    "Pdy = []\n",
    "Rdx = []\n",
    "Rdy = []\n",
    "Kx = []\n",
    "Ky = []\n",
    "Kdx = []\n",
    "Kdy = []\n",
    "\n",
    "\n",
    "def savestates(x, Z, P, R, K):\n",
    "    xt.append(float(x[0]))\n",
    "    yt.append(float(x[1]))\n",
    "    dxt.append(float(x[2]))\n",
    "    dyt.append(float(x[3]))\n",
    "    Zx.append(float(Z[0]))\n",
    "    Zy.append(float(Z[1]))\n",
    "    Px.append(float(P[0, 0]))\n",
    "    Py.append(float(P[1, 1]))\n",
    "    Pdx.append(float(P[2, 2]))\n",
    "    Pdy.append(float(P[3, 3]))\n",
    "    Rdx.append(float(R[0, 0]))\n",
    "    Rdy.append(float(R[1, 1]))\n",
    "    Kx.append(float(K[0, 0]))\n",
    "    Ky.append(float(K[1, 0]))\n",
    "    Kdx.append(float(K[2, 0]))\n",
    "    Kdy.append(float(K[3, 0]))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "卡尔曼滤波："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "for n in range(len(measurements[0])):\n",
    "\n",
    "    # Time Update (Prediction)\n",
    "    # ========================\n",
    "    # Project the state ahead\n",
    "    x = F*x\n",
    "\n",
    "    # Project the error covariance ahead\n",
    "    P = F*P*F.T + Q\n",
    "\n",
    "    # Measurement Update (Correction)\n",
    "    # ===============================\n",
    "    # Compute the Kalman Gain\n",
    "    S = H*P*H.T + R\n",
    "    K = (P*H.T) * np.linalg.pinv(S)\n",
    "\n",
    "    # Update the estimate via z\n",
    "    Z = measurements[:, n].reshape(2, 1)\n",
    "    y = Z - (H*x)                            # Innovation or Residual\n",
    "    x = x + (K*y)\n",
    "\n",
    "    # Update the error covariance\n",
    "    P = (I - (K*H))*P\n",
    "\n",
    "    # Save states (for Plotting)\n",
    "    savestates(x, Z, P, R, K)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "关于速度的估计结果："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA6wAAAIoCAYAAABtbWY+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABs20lEQVR4nO3dfZxU9X33//eHvWEDuNwIBHEVrFkWDIsLbNRYSZNGTbAqJlGDzWViRLR6caVtgkJpCtLkR2jakKu9cumP3Jim11UTRC41JSaFVrjys2qUZUFul9joJqDIjYvorrDs7vf3x8wOs2dn9szszJk5M/N6Ph77gDkzc853zs33fD/fu2POOQEAAAAAEDZD8p0AAAAAAAASIWAFAAAAAIQSASsAAAAAIJQIWAEAAAAAoUTACgAAAAAIJQJWAAAAAEAoEbACAAAAAEKJgBUAAAAAEEoErABQwsxsj5l9NN/pSMTMvmFmf5bG518zs6sDTFJOmVmdme0ws3fM7Ev5Tg8yZ2YvmtkH850OACgkBKwAUICiwdl7ZvZu3N93UvhOn4DOOfdB59zWgNI36ODRzMZJ+ryktZ51pvWb8y3D/fCApC3OuXOcc/+QzXSlwsyuMrPnzOxtM3vLzP7DzD4UfS+t35XJfjCzX5jZXydYPs/MDptZ+WDWm420DcLfSer3WwAAyRGwAkDhusE5NyLub1G+E5RFd0h62jn3nmd5Mf9mr0mS9iR6I9MgzY+ZVUvaKOl/SBoj6XxJKyWdDnK7SfxI0n8xM/Msv13SPzvnuvKQJkmDOg4/lfQxM5sQRHoAoBgRsAJAkTGzJWZ2KNqVtMXMPm5m/0vShZL+Jdoy+UD0s7HWpej/7zezl82s3cx+YGbvN7OfR9f1b2Y2Om47S83sP6Pv7TWzT0WXJ9vWRDPbYGZHzexVn26ucyX93wz2QdJtDeJ3+q1rcXRdb5vZOjOr8tkP/Y5PgvQ/I+ljkr4T/e6U6LaWmNnLktrNrNzMppnZVjM7YZHu3TcO9nd6TJEk59yPnXPdzrn3nHObnHMvD/C7gjofnpR0rqQ5cb9ttKTrJf1TisfpAjP7P9H3jlu0ZT5R2gbap3H7tc9x8Lz/TTN7Mu7135rZv5tZpXPulKQmSZ9I8lsBAF7OOf74448//grsT9Jrkq5OsLxO0u8kTYy+nizp4mTfiV8W/f8Lkt6vSIvaEUnbJc2UVCXpGUkr4r57i6SJilR+flZSu6TzEm0r+pkmScslVUr6PUm/kfSJJL/vqKQPpfKbve/7bSud35niul6M7ocxkvZJ+pNkaR7o+CT4PVsl3eVZ1w5JF0h6n6QKSa9IWhZN2x9KekdS3WCOp2fb1ZKOK9K6OVfSaL9jEfD58D1J3497fY+kHamsT1KZpJ2Svi1pePS3X5XkGhhwnyY6DgnSeq6kt6P7+U8k7ZI0Mu79f5C0Jt95CH/88cdfofzRwgoAhevJaCtQ799CSd2Shkq6xMwqnHOvOef+M411/g/n3JvOuUOS/j9Jv3LONbtIy9ATihTCJUnOufXOudedcz3OuXWSfi3psiTr/ZCkcc65v3bOdTrnfqNIEDI/yedHKRIopPKbB7OtVH9nKuv6h+h+eEvSv0hqSPKbpMyPzz84537nIl2lr5A0QtLqaNqeUaQb722D+J19OOdOSrpKkov+3qNm9lMze3+yhAV8PvxI0s29rdeKjG/+UYrru0yRQPp+51y7c+6Uc+7ZJNtJZZ9KfY+Ddz8cVyQ4/pGkv5B0nXPu7biPvKPI+Q0ASEGgY2AAAIG6yTn3b96FFplZ90FJHzSzf5X0Zefc6ymu8824/7+X4PWIuO18XtKXFWklVPS9sUnWO0nSRDM7EbesTJEgKpE2SeckWJ7wNw9iW6n+zlTWdTju/x2KBEcJOedeyfD4/C7u/xMl/c451xO3rFWR1tReKR/PBGndp8hYYpnZVEn/W9J/V//gTdHPBHY+OOeeNbNjkm4ys5cUCUI/neL6LpDU6lIb65rKPpX6HodEmiWtkPQ555z3s+dIOtHvGwCAhGhhBYAi45x71Dl3lSKFeCfpb3rfytY2zGySIi1YiySd65wbJWm3pN6Jcbzb+p2kV51zo+L+znHOXZdkEy8rOo5yENLdVpDr6rfPBzg+6a7vdUkXmFn8vfxCSYfSWF9qG3Vuv6R/lDQ9QTpycT5IkfGqn5f0XyT9q3MuPvgeaH2/k3Shd6xp/M+L+3+q+zTptWRm9ZIeVqSF9c4EH5mmSBdlAEAKCFgBoIhY5Nmdf2hmQyWdUqQVrbe16E1FxvZlw3BFCu1Ho9v9os4GM4m29aKkd6KT1bzPzMrMbLpFH5OSwNOS/mCQaUt3W0Guq89+8Dk+6fqVIi26D5hZhUWep3uDpJ8Mcn0xZjbVzL5iZjXR1xco0rL6QvQj3uMb9PkgRQLWqyUtVN/uwH7re1HSG5JWm9lwM6sys99PkraM9qmZna9It/A/kXSfpHqLe85xtEvzbEmbU1kfAICAFQAKWe/Mpr1/TygyPnK1pGOKdFUdr8g4Okn6hqSvRsd+Ls5kw865vZK+Jel5RQr89ZL+I+4jfbblnOtWZFbXBkmvRtP3fUkjk2zinyRdZ2bvS+E3e9OW7rYG+p2Zrsu7zwc6PummrVORYGpudH0PSfp8tDU0U+9IulzSr8ysXZFAdbekr0Tf9x7foM8HOedek/ScIsHxTz3vJV1f9L0bJH1A0m8lHVRkUqh+aZP0JQ1yn1rkUUBPKzKh0k+dcx2S/lbS/xP3sRskbU2jCzgAlDxzLms9xAAAyBozWyXpiHPuv+c7LUA2mNmvJC1wzu3Od1oAoFAQsAIAAAAAQimwLsHRMSIvmtnO6IO3V0aXX2RmvzKzVyzygPXKoNIAAAAAAChcQY5hPS3pD51zlyoypuSTZnaFIrMhfts59wFFHluwIMA0AAAAAAAKVGABq4t4N/qyIvrnJP2hpMejy38k6aag0gAAAAAAKFyBzhIcnVZ+h6Qjikzh/p+STsQ9vPug+j+MGwAAAAAAJXuIdlZEp5JvMLNRkp6QNDXV75rZ3ZLulqThw4fPnjo15a8CAAAAAApIU1PTMefcOO/yQAPWXs65E2a2RdKHJY0ys/JoK2uNpENJvvNdSd+VpMbGRrdt27ZcJBUAAAAAkGNm1ppoeZCzBI+Ltqwq+uD3ayTtk7RF0s3Rj31B0lNBpQEAAAAAULiCbGE9T9KPzKxMkcD4MefcRjPbK+knZvZ1Sc2SfhBgGgAAAAAABSqwgNU597KkmQmW/0bSZUFtFwAAAABQHHIyhjUIPT09OnbsmE6cOKHu7u58Jwd5VlVVpZqaGlVUVOQ7KQAAAACypGAD1oMHD8rMNHnyZFVUVMjM8p0k5IlzTsePH9fBgwd10UUX5Ts5AAAAALIk0OewBqm9vV3nn3++KisrCVZLnJnp3HPP1alTp/KdFAAAAABZVLABqyQNGVLQyUcWUWkBAAAAFB8iPgAAAABAKBGwAgAAAABCiYAVAAAAABBKBKx5dubMGa1evTr2+ujRo5o7d26g20jm5MmTqqysVGdnZ5/lGzduVG1tbb/lAAAAABAkAtY827lzp5588snY63HjxunnP/95oNtIprq6WhMnTlRLS0tsWVdXlxYvXqw1a9aosrIyq+kCAAAAgIEQsGZZW1ub7rnnHl155ZWqq6vTsmXLJEmbNm3Shz/8Yc2cOVNTpkzRhg0btGvXLt1444167bXX1NDQoNWrV2vJkiX61re+JUlasmSJbr/9ds2dO1eTJk3SggULtHXrVl199dWqqanRypUrY9t94YUXdNVVV2nWrFmqra3VQw89JEkJt5EsjZJUX1+vPXv2xF4/9NBDmjx5sm644QbdeeedevDBByVJv/71rzVlyhRt37496F0KAAAAoESV5zsB2bLyX/Zo7+snA1n3JROrteKGD/p+zjmn+fPn6/7779fatWvV1dWlK664QrfccovuuOMO7dy5U+PGjVNXV5c6OjpUXV2tefPmafbs2brrrrskSddcc00sgNy+fbtGjx6tp556SqdPn9b48eM1duxYbdq0Sa2trZo9e7ZWrFghSaqrq9PWrVtVXl6ut99+W5MnT9Z9992n+vr6PttwzumTn/xkwjTOnDlT9fX12r17t6RI8L1q1Spt2bJFkvS1r31Ns2fP1rx58/S5z31OjzzyiGbNmhXELgcAAACA4glYw2Dz5s168cUXtXjx4tiyEydOqKurS2PHjtWiRYs0f/58zZ07V9XV1ZKkpqYmLVy4MPb5HTt2aObMmZKk5uZmNTc3q7KyUt3d3SorK9Py5ctjz58dM2ZM7Hs/+9nP9L3vfU8nTpxQd3d3n2fUxm8jWRq7u7slRVpY161bJ0lauXKlbrvtNk2bNk2SdP755+sLX/iC5syZow0bNuiqq67K3s4DAAAAAI+iCVhTaQENWnNzs+69916tWrWq33tNTU3asmWLHn30US1ZskQtLS3q6upSS0uLpk+fLklqbW1VdXW1Ro0apdbWVp1zzjm64IILJEXGoc6YMUPDhw+XFGl97W3d3Lhxox5++GFt2LBBEyZM0Pr167V27VpJkQmX4rcxUBqlSMC6fPlyHThwQOvXr+/TPfjIkSN6+umnNWLECF144YVZ2msAAAAAkBhjWLOopqZGmzdvVkdHhySpvb1dLS0t2r9/v8rKynTttddq6dKlam9vl5np0KFDGjlyZGwyo/ggdPv27Zo9e3Zs3U1NTWpsbIy9jn+/9/8TJkzQoUOH9NWvfjX2We82kqWxV11dnQ4ePKhFixZpxYoVGjVqlKRIK+zcuXO1cuVKPfjgg3rggQeC2IUAAAAAEFM0LaxhMH/+fD377LOaMWOGRowYoaqqKq1evVqPPvqotm7dqhEjRmj48OF6/PHHJUWCx6lTp2r69Om6+eab1d3dPWDA+tGPfjT2evv27fryl78sSbr99ts1b948XXrppbrkkktUU1MT+653G3/1V3+VMI11dXWSpIqKCtXW1uro0aOxcbUdHR26/vrrdd999+nTn/60urq69O1vf1tbtmzRxz72scD3KwAAAIDSZM65fKfBV2Njo9u2bVufZfv27YuNrQQkzgkAAACgUJlZk3Ou0bucLsEAAAAAgFAiYAUAAAAAhBIBKwAAAAAglAhYAQAAAAChRMAKAAAAAAglAlYAAAAAQCgRsAIAAAAAQomAFQAAAAAQSgSsAAAAAIBQImDNszNnzmj16tWx10ePHtXcuXMD3UYyJ0+eVGVlpTo7O/ss37hxo2pra/stBwAAAIAgEbDm2c6dO/Xkk0/GXo8bN04///nPA91GMtXV1Zo4caJaWlpiy7q6urR48WKtWbNGlZWVWU0XAAAAAAykPN8JyJqfL5UO7wpm3RPqpbn+LZSS1NbWpqVLl2rXrl06fvy4PvOZz2jVqlXatGmTVqxYoVOnTqm9vV3f+MY3NGXKFN14443q6elRQ0OD5s+fr7a2No0fP15f+cpXtGTJEr3++us6duyY9u7dq6uvvlq33367vv71r2v//v1auHChVqxYIUl64YUXtHjxYnV0dOidd97Rn//5n+u+++7Trl27+m3jnnvuSZhGSaqvr9eePXtUX18vSXrooYc0efJkXX755Ro5cqTa2to0ZEiknmPu3LlasGCBbr755gB2OgAAAIBSVzwBawg45zR//nzdf//9Wrt2rbq6unTFFVfolltu0R133KGdO3dq3Lhx6urqUkdHh6qrqzVv3jzNnj1bd911lyTpmmuu0bJlyyRJ27dv1+jRo/XUU0/p9OnTGj9+vMaOHatNmzaptbVVs2fPjgWsdXV12rp1q8rLy/X2229r8uTJuu+++1RfX99nG845ffKTn0yYxpkzZ6q+vl67d++WFAm+V61apS1btmj8+PGaMGGCdu/erRkzZuixxx6TmRGsAgAAAAhM8QSsKbaABmnz5s168cUXtXjx4tiyEydOqKurS2PHjtWiRYs0f/58zZ07V9XV1ZKkpqYmLVy4MPb5HTt2aObMmZKk5uZmNTc3q7KyUt3d3SorK9Py5ctjLZxjxoyJfe9nP/uZvve97+nEiRPq7u6Ofca7jWRp7O7ulhRpYV23bp0kaeXKlbrttts0bdo0SdKcOXP03HPPafLkyVq2bJk2b96cvZ0HAAAAAB7FE7CGQHNzs+69995Y99p4TU1N2rJlix599FEtWbJELS0t6urqUktLi6ZPny5Jam1tVXV1tUaNGqXW1ladc845uuCCCyRFxqHOmDFDw4cPlxRpfZ01a5akyKRIDz/8sDZs2KAJEyZo/fr1Wrt2raTIhEvx2xgojVIkYF2+fLkOHDig9evXa8+ePbH35syZo2eeeUZ79uzRnXfeqYsuuihLew4AAAAA+mPSpSyqqanR5s2b1dHRIUlqb29XS0uL9u/fr7KyMl177bVaunSp2tvbZWY6dOiQRo4cGZvMKD4I3b59u2bPnh1bd1NTkxobG2Ov49/v/f+ECRN06NAhffWrX4191ruNZGnsVVdXp4MHD2rRokVasWKFRo0aFXtvzpw52rhxo7Zu3ar7778/27sPAAAAAPqghTWL5s+fr2effVYzZszQiBEjVFVVpdWrV+vRRx/V1q1bNWLECA0fPlyPP/64pEjwOHXqVE2fPl0333yzuru7BwxYP/rRj8Zeb9++XV/+8pclSbfffrvmzZunSy+9VJdccolqampi3/Vu46/+6q8SprGurk6SVFFRodraWh09ejQ2rrbXpEmT1NnZqe985zuqqKgIbD8CAAAAgCSZcy7fafDV2Njotm3b1mfZvn37YmMrkRtr1qzR3r179f3vfz/fSUmIcwIAAAAoTGbW5Jxr9C6nhRW+9u/fr0996lOaNGlSrHUYAAAAAIJGwApfU6dO1b59+/KdDAAAAAAlhkmXAAAAAAChRMAKAAAAAAglAlYAAAAAQCgRsAIAAAAAQomAFQAAAAAQSgSsAAAAAIBQImAFAAAAAIQSASsAAAAAIJQIWJFTZ86c0erVqyVJJ0+eVGVlpTo7O/t8ZuPGjaqtre23HAAAAEBpIWAtIT09PXLO5TUNO3fu1JNPPilJqq6u1sSJE9XS0hJ7v6urS4sXL9aaNWtUWVmZp1QCAAAACAMC1ixbsmSJbr/9ds2dO1eTJk3SggULtHXrVl199dWqqanRypUrJUltbW265557dOWVV6qurk7Lli2LreOFF17QVVddpVmzZqm2tlYPPfRQ7L1Nmzbpwx/+sGbOnKkpU6Zow4YNuvXWW/XYY4/FPrNgwQL94Ac/iKVnwYIF+sQnPqEPfvCD6u7uHnDb2Uj/V77yFf3Jn/yJbrzxRk2ZMkXXXXedurq6tGvXLt1444167bXX1NDQoNWrV6u+vl579uyJffehhx7S5MmTdcMNN0iS7rzzTj344IOSpF//+teaMmWKtm/fnq3DBQAAACDEyvOdgGz5mxf/Rvvf2h/IuqeOmaolly1J6bPbt2/X6NGj9dRTT+n06dMaP368xo4dq02bNqm1tVWzZ8/W8uXLNX/+fN1///1au3aturq6dMUVV+iWW27RzJkzVVdXp61bt6q8vFxvv/22Jk+erPvuu0/OOd1xxx3auXOnxo0bp66uLnV0dOiBBx7QqlWrYmloamrSokWLYukpLy/XE088oWHDhsk5N+C2s5H+5uZmjR07VuvXr1dFRYWmTZumvXv3asaMGZo3b55mz56tu+66S5K0bNky7d69W1IkCF61apW2bNkS+y1f+9rXNHv2bM2bN0+f+9zn9Mgjj2jWrFnZOrQAAAAAQqxoAtawaG5uVnNzsyorK9Xd3a2ysjItX75cQ4ZEGrPHjBmjzZs368UXX9TixYtj3ztx4oS6u7slST/72c/0ve99L7as97uSNHbsWC1atEjz58/X3Llz1d3drePHj+viiy+WJJ0+fVqvvPKKpk+fHkvP888/r2HDhkmS77azkf4dO3Zox44dGjp0qKTIuNUxY8ZIigTTCxcujH2vvr5e69atkyStXLlSt912m6ZNmxZ7//zzz9cXvvAFzZkzRxs2bNBVV101yCMDAAAAoNAUTcCaagtokFpbW3XOOefoggsukBQZrzljxgwNHz5cUqS1c9asWWpubta9997bp1W018aNG/Xwww9rw4YNmjBhgtavX6+1a9dKksxMTU1N2rJlix599FEtWbJEDz/8sBoaGmRmkqSXXnpJdXV1qqioUGtrq4YPH67a2trY+gfadjbS/+qrr6q6uloXXnihpEiraXt7u2pqanTmzBm1tLTEgmkpErAuX75cBw4c0Pr16/t0D5akI0eO6Omnn9aIESNi6wQAAABQGhjDmkXbt2/X7NmzY6+bmprU2NjY7/2amhpt3rxZHR0dkqT29vbYxEO9n5kwYYIOHTqkr371q7F17N+/X2VlZbr22mu1dOlStbe369ixY7HWyzNnzmjVqlWxLrPbt2/vs31JKW07k/Q3Nzf3+05veg4dOqSRI0f2mUyprq5OBw8e1KJFi7RixQqNGjUq9t6JEyc0d+5crVy5Ug8++KAeeOCBFI8EAAAAgGJAwJpFqQR8s2bN0vz589XY2KgZM2aooaFBH//4x/XGG29Ikm6//XZt3bpVl156qRYvXqyamprYOtesWaOpU6dq1qxZWrhwoR5//HFdffXVOnjwoG666SZ96UtfUllZ2YAB60Dbzkb6m5ub+62jNz01NTWaOnWqpk+fHptIqaKiQrW1tTp69GhsXKskdXR06Prrr9d9992nT3/607rrrrt04MCBPuNbAQAAABQ3y/djTlLR2Njotm3b1mfZvn37+ox1BDgnAAAAgMJkZk3OuUbvclpYAQAAAAChRMAKAAAAAAglAlYAAAAAQCgRsAIAAAAAQomAFQAAAAAQSgSsAAAAAIBQImAFAAAAAIQSASsAAAAAIJQIWAEAAAAAoUTAipw6c+aMVq9eLUk6efKkKisr1dnZ2eczGzduVG1tbb/lAAAAAEoLAWsJ6enpkXMur2nYuXOnnnzySUlSdXW1Jk6cqJaWltj7XV1dWrx4sdasWaPKyso8pRIAAABAGJTnOwHZcnjVKp3etz+QdQ+dNlUTli1L6bNLlizR66+/rmPHjmnv3r26+uqrdfvtt+vrX/+69u/fr4ULF2rFihVqa2vT0qVLtWvXLh0/flyf+cxntGrVKknSCy+8oMWLF6ujo0PvvPOO/vzP/1z33XefJGnTpk1asWKFTp06pfb2dn3jG9/QunXrdPPNN+vWW2+VJC1YsEBXXnmlFixYoCVLlujYsWM6ePCgfvvb32rXrl165513km47G+n/yle+ovb2dr3++uvav3+/PvCBD+inP/2p9u3bpxtvvFE9PT1qaGjQ/PnzVV9frz179qi+vl6S9NBDD2ny5Mm64YYbdOTIEdXW1qqtrU1DhkTqVubOnasFCxbo5ptvzt4BBgAAABBKRROwhsX27ds1evRoPfXUUzp9+rTGjx+vsWPHatOmTWptbdXs2bO1fPlyzZ8/X/fff7/Wrl2rrq4uXXHFFbrllls0c+ZM1dXVaevWrSovL9fbb7+tyZMn67777pNzTnfccYd27typcePGqaurSx0dHXrggQdiwaIkNTU1adGiRbH0lJeX64knntCwYcPknBtw29lIf3Nzs8aOHav169eroqJC06ZN0969ezVjxgzNmzdPs2fP1l133SVJWrZsmXbv3i1Jamtr06pVq7RlyxZJ0vjx4zVhwgTt3r1bM2bM0GOPPSYzI1gFAAAASkTRBKyptoAGrbm5Wc3NzaqsrFR3d7fKysq0fPnyWAvhmDFjtHnzZr344otavHhx7HsnTpxQd3e3JOlnP/uZvve978WW9X5XksaOHatFixZp/vz5mjt3rrq7u3X8+HFdfPHFkqTTp0/rlVde0fTp02Ppef755zVs2DBJ8t12NtK/Y8cO7dixQ0OHDpUUGbc6ZswYSZFgeuHChbHv1dfXa926dZKklStX6rbbbtO0adNi78+ZM0fPPfecJk+erGXLlmnz5s2DPDIAAAAACk3RBKxh0NraqnPOOUcXXHCBpMh4zRkzZmj48OGSIq2ds2bNUnNzs+69994+raK9Nm7cqIcfflgbNmzQhAkTtH79eq1du1aSZGZqamrSli1b9Oijj2rJkiV6+OGH1dDQIDOTJL300kuqq6tTRUWFWltbNXz4cNXW1sbWP9C2s5H+V199VdXV1brwwgslRVpN29vbVVNTozNnzqilpSUWTEuRgHX58uU6cOCA1q9frz179vRZ35w5c/TMM89oz549uvPOO3XRRReleDQAAAAAFDomXcqi7du3a/bs2bHXTU1Namxs7Pd+TU2NNm/erI6ODklSe3t7bOKh3s9MmDBBhw4d0le/+tXYOvbv36+ysjJde+21Wrp0qdrb23Xs2LFY6+WZM2e0atUqzZo1K7au+O1LSmnbmaS/ubm533d603Po0CGNHDmyz2RKdXV1OnjwoBYtWqQVK1Zo1KhRfdI7Z84cbdy4UVu3btX999+fwlEAAAAAUCwIWLMolYBv1qxZmj9/vhobGzVjxgw1NDTo4x//uN544w1J0u23366tW7fq0ksv1eLFi1VTUxNb55o1azR16lTNmjVLCxcu1OOPP66rr75aBw8e1E033aQvfelLKisrGzBgHWjb2Uh/c3Nzv3X0pqempkZTp07V9OnT9eCDD0qSKioqVFtbq6NHj8bGtcabNGmSOjs79Z3vfEcVFRVpHhEAAAAAhczy/ZiTVDQ2Nrpt27b1WbZv374+Yx1RnNasWaO9e/fq+9//vu9nOScAAACAwmRmTc65Ru9yxrAilPbv369PfepTmjRpkh5//PF8JwcAAABAHhCwIpSmTp2qffv25TsZAAAAAPIosDGsZnaBmW0xs71mtsfM/jS6/EEzO2RmO6J/1wWVBgAAAABA4QqyhbVL0lecc9vN7BxJTWbW+xDNbzvn/i7AbQMAAAAAClxgAatz7g1Jb0T//46Z7ZN0flDbAwAAAAAUl5w81sbMJkuaKelX0UWLzOxlM3vEzEYn+c7dZrbNzLYdPXo0F8kEAAAAAIRI4AGrmY2QtEHSnznnTkp6WNLFkhoUaYH9VqLvOee+65xrdM41jhs3LuhkAgAAAABCJtCA1cwqFAlW/9k5938kyTn3pnOu2znXI+l7ki4LMg0AAAAAgMIU5CzBJukHkvY559bELT8v7mOfkrQ7qDQAAAAAAApXkLME/76k2yXtMrMd0WXLJN1mZg2SnKTXJN0TYBoAAAAAAAUqsBZW59yzzjlzzs1wzjVE/552zt3unKuPLr8xOptw0Thz5oxWr16d1XWePHlSlZWV6uzs7LN848aNqq2t7bccAAAAAIpBTmYJLiU7d+7Uk08+mfC9np4eOefSXmd1dbUmTpyolpaW2LKuri4tXrxYa9asUWVl5WCTCwAAAAChRcCaRbt27dKNN96o1157TQ0NDVq9erWWLFmiBQsW6BOf+IQ++MEP6jOf+Ywee+yx2HcWLFigH/zgB5KktrY23XPPPbryyitVV1enZcuWxT5XX1+vPXv2xF4/9NBDmjx5sm644QZJ0p133qkHH3xQkvTrX/9aU6ZM0fbt23PwqwEAAAAgGEGOYc2p5557TsePHw9k3eeee66uvPJK38/V19dr3rx5mj17tu666y5J0jXXXKPy8nI98cQTGjZsmC6++GJ985vfjH2nqalJixYtknNO8+fP1/3336+1a9eqq6tLV1xxhW655RbNnDlT9fX12r07Mj9VW1ubVq1apS1btsTW87WvfU2zZ8/WvHnz9LnPfU6PPPKIZs2aleU9AQAAAAC5UzQBa1g0NTVp4cKFsdfNzc16/vnnNWzYMLW1ten48eO6+OKLJUmnT5/WK6+8ounTp2vz5s168cUXtXjx4th3T5w4oe7ubkmRYHjdunWSpJUrV+q2227TtGnTYp89//zz9YUvfEFz5szRhg0bdNVVV+Xi5wIAAABAYIomYE2lBTRoZ86cUUtLi6ZPny5Jam1t1fDhw1VbWyspErw2NDQo8sQf6aWXXlJdXZ0qKirU3Nyse++9V6tWrUq47vr6ei1fvlwHDhzQ+vXr+3QPlqQjR47o6aef1ogRI3ThhRcG+CsBAAAAIDcYw5pFhw4d0siRI2OTIG3fvl2NjY2x948ePaoxY8ZIigS3q1atinXbramp0ebNm9XR0SFJam9v7zPJUl1dnQ4ePKhFixZpxYoVGjVqVOy9EydOaO7cuVq5cqUefPBBPfDAA0H/VAAAAAAIHAFrFtXU1Gjq1KmaPn26HnzwwX4B69VXX62DBw/qpptu0pe+9CWVlZXFAtb58+ersbFRM2bMUENDgz7+8Y/rjTfOPvGnoqJCtbW1Onr0aGx8rCR1dHTo+uuv13333adPf/rTuuuuu3TgwIE+41sBAAAAoBDZYB6zkmuNjY1u27ZtfZbt27evzxhOgHMCAAAAKExm1uSca/Qup4UVAAAAABBKBKwAAAAAgFAiYAUAAAAAhBIBKwAAAAAglAhYAQAAAAChRMAKAAAAAAglAlYAAAAAQCgRsAIAAAAAQomAFQAAAAAQSgSsWXbmzBmtXr06q+s8efKkKisr1dnZ2Wf5xo0bVVtb2285AAAAABQDAtYs27lzp5588smE7/X09Mg5l/Y6q6urNXHiRLW0tMSWdXV1afHixVqzZo0qKysHm1wAAAAACK3yfCcgW5577jkdP348kHWfe+65uvLKK30/t2vXLt14443q6elRQ0OD5s+fr7a2Nh07dkwHDx7Ub3/7W02bNk3z58/XrbfeKklasGCBrrzySi1YsEBtbW1aunSpdu3apePHj+szn/mMVq1aJUmqr6/Xnj17VF9fL0l66KGHNHnyZN1www06cuSIamtr1dbWpiFDInUQc+fO1YIFC3TzzTcHsk8AAAAAIGi0sGZRfX295s2bp69//evasWOHli5dqu3bt+v111/XE088oX379mnnzp2aNWtW7DtNTU2aNWuWnHOaP3++brnlFj333HPas2ePNm3apObm5ti6d+/eLUlqa2vTqlWr9O1vf1uSNH78eE2YMCH2/mOPPSYzI1gFAAAAUNCKpoU1lRbQXGhqatLChQtjr5ubm/X8889r2LBhamtr0/Hjx3XxxRdLkk6fPq1XXnlF06dP1+bNm/Xiiy9q8eLFse+eOHFC3d3dkiIB67p16yRJK1eu1G233aZp06bFPjtnzhw999xzmjx5spYtW6bNmzfn4ucCAAAAQGCKJmANgzNnzqilpUXTp0+XJLW2tmr48OGqra2VFAleGxoaZGaSpJdeekl1dXWqqKhQc3Oz7r333lgXYK/6+notX75cBw4c0Pr167Vnz54+78+ZM0fPPPOM9uzZozvvvFMXXXRRgL8UAAAAAIJHl+AsOnTokEaOHBmbBGn79u1qbGyMvX/06FGNGTNGUiS4XbVqVax7cE1NjTZv3qyOjg5JUnt7e59Jlurq6nTw4EEtWrRIK1as0KhRo/pse86cOdq4caO2bt2q+++/P8ifCQAAAAA5QQtrFtXU1Gjq1KmaPn26br75ZnV3d/cJWK+++mp961vf0k033aTzzjtPZWVlsYB1/vz5evbZZzVjxgyNGDFCVVVVWr16terq6iRJFRUVqq2t1dGjR3XXXXf12/akSZPU2dmp73znO6qoqMjNDwYAAACAANlgHrOSa42NjW7btm19lu3bt6/PGM5St2bNGu3du1ff//73852UvOGcAAAAAAqTmTU55xq9y2lhLXD79+/Xpz71KU2aNEmPP/54vpMDAAAAAFlDwFrgpk6dqn379uU7GQAAAACQdUy6BAAAAAAIJQJWAAAAAEAoFXSX4J6eHg0ZQswNqRAmDwOAdKw/sF5P/+bpPsuu+73rdMuUW/KUIgAofOSthadgo73hw4fr0KFD6uzsJFgpcc45HT9+XFVVVflOCgBkzdO/eVotb519HnfLWy39ClkAgPSQtxaegm1hramp0bFjx9Ta2qqurq58Jwd5VlVVpZqamnwnAwCyqm5MnX74yR9Kkr74iy/mOTUAUBzIWwtLwQasQ4YM0fjx4zV+/Ph8JwUAABQougcCQLgVbJdgAACATNE9EADCrWBbWAEAALKB7oEAEF60sAIAAAAAQomAFQAAAAAQSgSsAAAAAIBQYgwrAAAFihluUao494HSQQsrAAAFihluUao494HSQQsrAAAFjBluUao494HSQMCKgkDXHwAAAKD00CUYBYGuPwAAAEDpoYUVBYOuPwAAAEBpIWAFgByjizsAIIy4PxWmYj9uBKxACSn2DK1Q9HZxrxtTJ0mx7u4ch/zi+gAQpELIY7g/FaZiP24ErEABS/fmV+wZWiGhi3v4cH0ACFKh5DHcnwpTMR83AlaggA3m5lfMGRqQKa4PAEEijwHSR8AKFLhSu/llu0tVIXTRAgAgFaV4TyvF31xqCFgLABcicFa2u1QVShctAAD8lOI9rRR/c6khYC0AXIhAX9luVS61VmoAQPHK9j2t5a2WPusJY6MJ9/HiRsBaILgQAQAAkEvX/d51fV57G03oBYhcIGAFAAAA0M8tU27pE3x6G03oBYhcIGAFkFfUzgJA8SFvLx1B9wLkXOrPu0/iKw2K0ZB8JwBAaeutne3V8lZLvxsTAKCwkLcjWziX+vPuk7oxdf26bxcTWlgB5B1jtAGg+BRa3k5LXniF+VzK13kTv0+KHQErAAAASl6xjscshFl+C1mxnjdhQsBaoMh8+qJWtHiV2jgNAED+hLklbzD8ZvlFdhTbeRM2BKwFiMynP2q3ipf32Bb7OA0AyLdElcASFcGFyG+WX6AQELAWIDKfxKjdKl6lNE4jHyicJkdvFpQib0WhREUwgPwhYEUoCqt06QWyJ93ricJpYkH3ZiHfQ5h5KwqpCAaQLwSsCEVhlS69QPYM5nqicNpf0L1ZyPeA4FAhhGzhXMo/AlZICkdhlS69QPZwPRWGoI9Ttgta6a6Pgh7yhQohZEs+ziXyzr4IWAEMGhkqEG5+Ba1Mu4/7FdwIGjBY2bi/UHGHbMn1uUTe2RcBK0oWwVbmCiFD5Tij1A1U0Mq0+3gqBTeCBgxGIdxfgCCRd55FwIqSxc0wO4LIUONnZs30uasc5/woxYqCfPzmIydP61j7aX127fOSpNcqT2rs8KFpraPYCkWleO4Vq0I7N3N97iXaHs8qRzEiYEVRGEyh7cjJ0+o+fZ46Wu+WJHVX/p2OnDwdeFoxMO/MrNl47iqFntwrxYqCfPzmY+2n1XG6S7LI65PvndHJ985kFMAWulI89xAOuT73Ek2aybPKUYwIWFEUvIW2jtNdOhbAdzKRjclK/L5TDLwzs5aiYilwF1pFQSr8nsuazd+cqCJOUuy1JHW4Lg0bWq51X/ywJOmPHhuhY+2npc7I+8UQwA6mAiebx6EYKpCQO7nO94rxOeXeay7brcaJ8tZT9jtd/sPPxD4zdvhQja8emtL2s9HTBQMjYEXRiC+0Xf7D/qf2o7/6rZ7acSj22lvQS/SdbMp0spJUvoPi4S30+AVKxSaIICFZJVAvv0JJ0M9l9fJWqiUybGh5n4LR+OpIIeuHn0wcwAZdMReEfFfgMEMokgk6sCpV3mvOr9U43YDRm7eO7L5MKjv7fm8+2Ruwji6frEMHpyZdf64bQEoRASuKVsfprj4tEb969S1J0uUXjZHUv6CXC5lMVpLqd0pdMRYgch0opSLoAnUQQUKiSqB4foWibD+XNZVCVnyl2hd/US1JsWA0flky3gDWWzGXSituvHy1HOS7tZ4ZQpFIuoFVMQqqdTGdlmO/oRFtZb9URfXOWAB6yn6nYUMviOWt0of7rO+za5+XOs/mtZ9d+7z2vnFSo89LvP5cN4CUIvYoCoJfoao3s+g1dvjQSO1W59l1XH7RGM1rOF9/fPmFkvwLeihMxViAyHaglA25KFBnEiQMNBlJqoUgb68Mr0wLZn6FLG++li3xlXm/6X43srBsgC94vkvLQW7kO0hHajLpkust20jqU04Jq/gePwc7XlHP6fMCbV305sV+lXveniW/6/wPlb37ho61R/Zrz+nzNLL8srTScMl51Vp3T+L156MBpNQEFrCa2QWS/knS+yU5Sd91zv29mY2RtE7SZEmvSbrVOdcWVDow+JaQMHVB9Osa59ctTurdD9/V5l9EXhdDy1s2hOk4Z0sxjukJozAXqLMxGclTOw5p7xsndcl5iSu3slEwG6iQFUQhyFuZV/2+Co0dPlTrbj3bitvyVouGnffd2Hfi84TLf1jeJ+At1rFa2ZypHKUjlcAqnrdss/eNSGV8b8CaqNIs1wGtNw1tZVPVXXYyltae0+fpvPIrte6u4FoXvXmxX947vnqo2rpei+Vjw48eUVnXhZrcuTjyAZPm1Z8/6PR4y5iJGkC8vfykwqiMCKsgW1i7JH3FObfdzM6R1GRmmyXdIenfnXOrzWyppKWSlgSYjpLnLbhte3Obtr25LRbEJroZh7EL4kBd41JpLU2l5c2bwRR75hLG4wxkS7oVF96CWW8BqbdW3SvbwZu3kFX21hsaX53dQMmvoOWXJ3gDXm+rsFR4+aa3lctbIJfOG3D8WqlOkIf+/AIr77nm7Ura2/W0933vUKZfvfqWfvXqW7F8KhcVRt7fNLr7Ixrd/ZGzH0gQ/CUK1uLF5xGJgvJEvys+L/bmvd7eKN58rH7ctOj1mDgvTyT+OAxUcZlIol5+3soIpCewgNU594akN6L/f8fM9kk6X9I8SR+NfuxHkraqwAPWQpgcIb7g5k1vosAtjF0Qs2GgAqw3g/HeGKTCK4j58TvOhXBuFwtadPLPWzC75LxqzWtIXgvvF7ylW5gM4pFO6fLLE/wmdSrEQpm3latfgdzDG4QwQd7ghOH+4k3DrqP7VNZ1fsrXsDcA9VZyeVsbveeatxeFN7+Z8oHdqqjeqWHRsZcfHH1aZ05eKkXPz0QtjUG0yg5UceeVKFiL5y1beYNyqX9e6g0Yvdvw7sdMnzbgPQ5+9wKvRL38BgrgsyHd1v1CY8654DdiNlnSLyVNl/Rb59yo6HKT1Nb7Opna2lq3Zs2agFM5ePvf2q/3zryn91W8T5Ji/586ZmrW1i8p6foyff/Nk6d0/N0kOUvUqSG/U8WQIaofPy2lNB/tOKrjp473WXZu1bkaN2xcSmncdWSfzvT0qKrnAklSu36rsiGmWRM+mPDzfq+TLRsoDd798k7XW7Lyd1U+5Gy/5JGVo3XxmIkp/eZU0jhQegb7u/3WOdD7fud2utsfTJrS/f5gfmM6388G7zYyvV783s/GuZbuNjLdr9n+fir2vh4Jti6ZmFpNerr5ljdP8b6f7vYSLcv2cUn3+959GEQeke3zf/vhPZKU8nHYfniPunuchisSACS6P+Y6X8u2weQJfuvI9v0lG+e6Nw0dnd3qPjNcw8siwZPfNeo9FyTp3BGVen91VcL3/coyifbhQPso0fZPnjojSaquqkj42q881y8f6+zS8MryQeeLXonKnPH7LFEavJ8J2/WRSnr2vn4yti97eX93Jtvwrj/d+0tY3HjjjU3OuUbv8sAnXTKzEZI2SPoz59zJSIwa4ZxzZpYwYjazuyXdLUkXXhj+mtpEmWyhOP5uZ7+LyKu7x0nqSX2dp473yWTbz3Soo7NbR0+cre0Z6EI909MT3WZE2RBTxZAhKW8/G95fXeXJQA/pdE+npMhv6Han9HZnm6RIwOr9ze+deU/HdTxp0OHlDVri15VPhXxuS/1vjqeGdOf8XPIzbti4Ac+TMPwGvzSc6XI609MTC1hODemWpD6vw7bfs62i3FShMk0dEynYbT/cd9C9N6/NR76GzEWOWU/sltjV49TV0x0716XSON+zIdf3l/fOvNdnO94AcO/rJ6WysxUu2w+buntc7Nh22QlZWbsqyiPXdo9Oq2zIUF0yIXEw5z1XBnPND7SPvOuXIoFpfPnKm3cnOl/jvafuPq+HV5br3BGVaaU5XqIK2SGeot+Q8nMlnV3ozUvDKP5cSqW8du6ISunds6/bO7ukd5W0HDwY8RUL3vtPoQu0hdXMKiRtlPSvzrk10WUtkj7qnHvDzM6TtNU5N2Dft8bGRrdt27bA0pmp3i5T3slHsjXpi9/6Mn2/t5vCQN09Lv/hZ9RxukuX2NLYsoG6mHi36f2+t9vMHz32xzrWfjo2IH6vW61hQ8v1qy9uSLi+3udSxs9QmmgCmESPhMnWfux9wHRvGr2/4bXKv9PY4UP1s1sfTfobBvpNUv/uUd7v+G0z09+Y6etUZHq9+KWhd0xQb3ci77mV7j7MhnR/s/c3vNz9DUnSjLK/iH0m/nr0+039uw79nSSdnZAiwTJvty1vGryvvd/37nevZI8jGuy5NZjzKpW8cKBtpJvvZeM3ZZo3ZjtP8O5Dv8+nMv4z22n28ublfvzyYcn/Gs3GNoIcojKYe6jfOrL92i+f877vfbSJFOnSe+bkpbEu4InKJgc7XlGVi7T0dQw5IEka1jMl8vp0l84rv1Kb7ko8si3Te2YQ99xE51K8TO+BqZRt4iWavT3b13i2+XVnTyU9fvebTPPeROX2SyZWa8UN4W5xNbPctrBGu/v+QNK+3mA16qeSviBpdfTfp4JKQ6lId1r0ZBOLDMQ7XsBvnFK6Ewt4H63gNztmGMZ6SQM/HmIw49nSnSQmjA+r9s467BX0GKVMxxSFdRIZ75T6Bzte0WsuEhR2nO5S264r9ceXRwpNfueF3+y3iXgfC+Udu5hotlnp7MRofjNHFuPjiLz5ZrrjoAYjLHljqlIZ/5nKs2LzeY0mGq/mvUZPvndG27c06Kkdc2OfSSfNfrPJ5kO+x6D65XPe9w+8Ml3SdI2IGyu5J1YRF3ntvUbvaPhUn9945GR9nwA309lm8yHR+RoviEf+DVS2KcQ5UjIdI5sNyco6vfzGEheaILsE/76k2yXtMrMd0WXLFAlUHzOzBZJaJd0aYBpCIduZujfg9AZKiWaRk5R01rlUClHeDM5v8Hi6EwskK+wmE4bMwu/xEN4CfaYTsiSTzsOqg37mm7dg3Lu9Xqfsdzpy8nRGx85vYgHvuZfo/E40u2CyR4skmnzLK9196Hcc/CqVvIWo7Yf36G33Yp9t+J0XfVv6+gaXyZbFS2Vafy+/Wbhz/TiiwVTepcOvYBiEIPLGdCcEi6+M9N5/EuV7yVpXevk91iwfM6f68V6ju47uU9n79kidkYDVb1K/VCp90xFEcJnus5iPnDytgx2vxFq0T9nvVOUuyOie6JfPxb+faDIib0WcVxjKGihe8XllW9kv9XbZ2fu43/XhV9bJx/0nSEHOEvyskt5e9PGgtpsPiWp/40+qdDN1P97WEW+g5Pewe78MOlsSPYam1x9ffmGf7QdRoxc0vwK732yaQbWGDhQUBF1Lf6btcnW01sRe7/FUjux1q3XMnU743VSl8jy2+HPPy292Qe9x87ueBrMP/Y6D32y13kJUb9efZFP8S33Pi2wHZqlIt5dGLmY8THdW4FKUbout3/5LVHEn9Q3AEh3rgR5r5j1XUtlG0PfAZLMtJ0uz93rwq/RNV7bLIb3SeRbzmZOXqqervXcaCFW5CzSy+7LY+37HLZU8YKB80FvuKGVBP3+dWe/9efPKt8tejAWpkv/14a3EKnaBT7pUClLplplOpu7l18Ux1WAw27Us8TVDXokKzEFnkGEU/5vbul7TJefV9ekiOdAzHFN9Nlm8VIKCgbpm+xUQ/GrIva333sqRRDXgg21tTPV5bF7ptgz6FXIGO1X9QMfB7/mfXn5B+NjhQ3XQfhfrnjhsknThxGslZTdPGKiQkqiXxkDnnvdcykZX7XSfs4r0W5j87j/eirtEkhXMUt2m3za8rZt+6w+CN82J8pGBKn2l/vdgv+shk3JINozu/ohG20eSFrD9jpvfeeGXDxaCZGP5syno568X2rCEfEmcV34waS8j7/VRiOd3JghYsySdbpl+vBnWwY5X1HP6vAG7OA70/SAyPL9adO+FFHQGmYg3QM51LZ9fpu29uaYyztDvhp1u1+1Ex/GU/S42YU67+61OHjsvtp4DbR9QefW7qopOhuetARxM632mrY3FUEjJ9jPfvIVbb/fEbW9u0y8OH9CxX7wgKTvXRrZb4vzGzHrPk0QtslLfa2AwwyHCJt/5WqaSnave8Z+ZFMz8tuE9V8KQZ/R2B+xNa3xLSyLe83YwPT3CVonsd9z8zovBDFMIm1yM5fd71nK215+KQs/XcqEYzu9MELCGkDfDqnIXaGT5ZVp3V2qtAEFleN4M5eaPJb+5eS+koDNIr0S/N4iMf6AWJb9M25v5+I0zlLJfw+at4Vt/YL5ngolanem5VL2z3M8aPVfzGu7KqFuVt8tyKmOzBmoFG189VG1dr2nYed+VJJW99YbGVxfWjS7ormrec9FbqZXKteFXEZbtljgv73EeVnlSe9+aoc+ujbyf6OHzXrkaDhGUXOVr+RZ0wSwbQ1Ky3eXx7bIX1eF+q71vRNLVc/o8jSy/LOnnU2mhjeftydJWNlXdZSdjgW7HkAPa9uY2/d1//ERSJGCuGfaBjH6T36Qw6UrlvCjErqiJ0pzLsfzJ0pArpZKvITMErDngN8Y1kfgMK5Uuh0FneEG0kAaZQeZiooQgur34jTMcTEEuvtuYX9e3oPdbolnrEgXdibrHJhOG7keJuseHOTAazHHO9yy+3m11lx/SsDGSOq+V1D8YDWooRCYy7f3CBDDhEESeM3b4UB1rv/Dso0YGMfvsQMN0vJMzju7+yNmZbtV/wpfOjgk6cPgDvmOLB5LKBHjZFIZ7QbrCkOZ8p6FU87Vc9IYsJgSsORD0o0dykdlku4U03xlkNmQ7kw3iERje7+e761uiWeu8QXe63WPzfbNLlDa/mYXzMWYuG/JR89/LbxKbQpDvoB/ZkY08x1tY9c5xkC6/e4V3csb++i5PNIeCt+ySSmV8LieFyfe9YDDCkOYwpKEUcT9IT+GVmArEQI/NyHSMq1cYMpt0a4rCkOawCWIK8kKcjTnsMzkmejyEt3v8/f+6Vr98fZNei/vMyO7LYi0a+a44QP7kM+gPStjGQhaCbBdW/fLNdPP+ROvzTnDnbbUNw3PAgUJSjPeDoBCwZsHE913c53Uqk8D4PY+w0FBThFKRyuMhjrkXVDb0jT6fOX/Mfv3wk0skFUbFgVRY48HoXpW6bB7XfEyoVywKrbDq9+zxdGdsBzJRSPcnZI6cJAuemP/NPq/9xhl6M/1EDz2XlLWJCnKl0G6+QDJ+LUapPB4i34+QyFQQ3faDbImj0iw12T6uuZ5Qr5TluyU73bINPUkQlGIYVob0ELDmgTfTTzRWJF4hPnoBKFTem962N7dp25vbYq13pVKTm+1u+7loiaPSzB/DMQqT3/WTaKhC2AJaIFvIx0oPAWsIpPt4BwDBycYjYNAfLXHA4PldP6kMVQCAQkXAitBifEJi7JfcoiYXQCHIxTAEv/tP0Pcn7n9AaSJgRSgxPiGxdPcLE9EgzCh8Ipl0zg3yudzwu/8Efd+mXACULgJWhBKtWomlsl/iC3rb3twmSWp8f6MkbvAIj2IpfBJ0Z1+65wYTbuWG3/0n6Ps25QKgdBGwAkXEW0hrfH8jz0REKBVD4TOVwIqANn2DOTeYcKu/Qjz3CjHNAIJHwBoQMl3kQzEEAUCh8LveiqUVGYWnEM+9QkwzgNwgYA1AqWS6BOUAkBwVSMiXQjz3CjHNQC6VcrmbgDUApZDplkpQDqQi/ibS+7qUbiRAvFIuVAFAEEq93E3AikEphaAcSEWiG0ap3UiAXqVeqAK8qMBBNpR6uZuANQSYkj+cOC5IRao3EQotKAWlXqgaCHlA6aECB70oU2aGgDUEmJI/nDguxSvXBUcKLUBpIw8oTVTgoBdlyswQsOZJogIzU/KHD8el+OSj4JiLQgutN0B4BZEHcM0DhYUy5eARsOYBNa1A/hRjjXep5ikU2FGqSvWaB/leoWAyxuwiYM2DYiwwY3C48SAbSjFPocCOUlaK1zzI9woFkzFmHwErkCfceIDBo8AOoNSQ7xUGjlP2EbACeUKGBgAAgCB4uyVPHTNVSy5bkscUDR4BKwAAyJl8DIXwFtyu+73rqDAEULSKrcceASsQhzGlABCcbA2FSCev9q6/5a0WSSJgBVC0iq0XHwErEMWYUgAIVjYKUenm1d5txre0AgDCj4AViCq22qiwYqp3AJkgrwaA0kLACiBnmOodAAAA6SBgBZAztIwAAAAgHUPynQAAAAAAABIhYAUAAAAAhBIBKwAAAAAglAhYAQAAAAChRMAKAAAAAAglAlYAAAAAQCjxWBsAAFBSWt5q0Rd/8cXY/+vG1OU5RQCAZAhYAQBAybju967r87puTF2/ZQCA8CBgBQAAJeOWKbfolim35DsZAIAUMYYVAAAAABBKBKwAAAAAgFAiYAUAAAAAhBIBKwAAAAAglAhYAQAAAAChRMAKAAAAAAglAlYAAAAAQCgRsAIAAAAAQomAFQAAAAAQSgSsAAAAAIBQImAFAAAAAIQSASsAAAAAIJQIWAEAAAAAoUTACgAAAAAIJQJWAAAAAEAoEbACAAAAAEKJgBUAAAAAEEoErAAAAACAUCJgBQAAAACEkm/AamZNZvZfzWx0LhIEAAAAAICUWgvrZyVNlPSSmf3EzD5hZhZwugAAAAAAJc43YHXOveKc+0tJUyQ9KukRSa1mttLMxgSdQAAAAABAaUppDKuZzZD0LUl/K2mDpFsknZT0THBJAwAAAACUsnK/D5hZk6QTkn4gaalz7nT0rV+Z2e8HmDYAAAAAQAnzDVgl3eKc+038AjO7yDn3qnPu0wGlCwAAAABQ4lLpEvx4issAAAAAAMiapC2sZjZV0gcljTSz+JbUaklVQScMAAAAAFDaBuoSXCfpekmjJN0Qt/wdSQsDTBMAAAAAAMkDVufcU5KeMrMPO+eez2GaAAAAAAAYsEvwA865b0r6YzO7zfu+c+5LgaYMAAAAAFDSBuoSvC/677ZcJAQAAAAAgHgDdQn+l+i/P8pdcgAAAAAAiPB9rI2ZbTazUXGvR5vZvwaaKgAAAABAyUvlOazjnHMnel8459okjff7kpk9YmZHzGx33LIHzeyQme2I/l03qFQDAAAAAIpeKgFrt5ld2PvCzCZJcil87x8lfTLB8m875xqif0+nlkwAAAAAQKkZaNKlXn8p6Vkz+7+STNIcSXf7fck590szm5xZ8gAAAAAApcq3hdU59wtJsyStk/QTSbOdc5mMYV1kZi9HuwyPTvYhM7vbzLaZ2bajR49msDkAAAAAQCFKpUuwJF0p6aPRvysy2N7Dki6W1CDpDUnfSvZB59x3nXONzrnGcePGZbBJAAAAAEAhSmWW4NWS/lTS3ujfn5rZqsFszDn3pnOu2znXI+l7ki4bzHoAAAAAAMUvlTGs10lqiAaZMrMfSWqWtCzdjZnZec65N6IvPyVp90CfBwAAAACUrlQCVkkaJemt6P9HpvIFM/uxIl2Ix5rZQUkrJH3UzBoUmWX4NUn3pJ5UAAAAAEApSSVg/YakZjPbosgswR+RtNTvS8652xIs/kF6yQMAAAAAlCrfgNU592Mz2yrpQ9FFS5xzhwNNFQAAAACg5CUNWM1slmfRwei/E81sonNue3DJAgAAAACUuoFaWJM+ckaRMah/mOW0AAAAAAAQkzRgdc59LJcJAQAAAAAgXirPYR1mZl81s+9GX9ea2fXBJw0AAAAAUMp8A1ZJP5TUKenK6OtDkr4eWIoAAAAAAFBqAevFzrlvSjojSc65DkUebwMAAAAAQGBSCVg7zex9iky0JDO7WNLpQFMFAAAAACh5Az3W5n9K+rGkByX9QtIFZvbPkn5f0h25SBwAAAAAoHQN9FibA5L+VtJ5kjZL+jdJ2yX9qXPuWA7SBgAAAAAoYUm7BDvn/t4592FJfyDpFUmfVuTZrPeZ2ZQcpQ8AAAAAUKJ8x7A651qdc3/jnJsp6TZJn5K0L/CUAQAAAABKWirPYS03sxui41d/LqlFkdZWAAAAAAACM9CkS9co0qJ6naQXJf1E0t3OufYcpQ0AAAAAUMIGmnTpLyQ9Kukrzrm2HKUHAAAAAABJAwSszrk/zGVCAAAAAACI5zuGFQAAAACAfCBgBQAAAACEEgErAAAAACCUCFgBAAAAAKFEwAoAAAAACCUCVgAAAABAKBGwAgAAAABCiYAVAAAAABBKBKwAAAAAgFAiYAUAAAAAhBIBKwAAAAAglAhYAQAAAAChRMAKAAAAAAglAlYAAAAAQCgRsAIAAAAAQomAFQAAAAAQSgSsAAAAAIBQKs93AoBsaFv3mE5u3NhnWfX112v0Z2/NU4oAAAAAZIoWVhSFkxs36tT+/bHXp/bv7xfAAgAAACgstLCiaFRNnapJ/+ufJEmtt38+z6kBAAAAkClaWAEAAAAAoUTACgAAAAAIJboEI5SYRAkAkAj3BwAoLQSsCKXeSZSqpk6VpNiEShRIABQLAq/B4f4AAKWFgBWhxSRKAIoZgdfgcX8AgNJBwBoC1LIDQGki8AIAYGAErCFALTsAAEBpocECSA2zBIdEby37pP/1T7HAFQAAAMWpt8Gi16n9+/sFsABoYUWOUIsIAADQF8MCAH8ErMiJQuz2TJANAAAA5BddgpEzhdbtma46AAAAQH7RwoqSlUoLKl11UIzoPQAg18h3AAwWAStKViF2UwaygXMfOItAKjfIdwAMFgErShotqChVnPsoVd4AteOllyRJwz70IUkEUkEi3wEwGASsAACgZHhb+oZ96EN9WlQJpADEoxdG/hGwIhDeizu+cJAvYUwTACD34lv6AGAgdGfPP2YJRiC8M+xWTZ2q6uuvz2OKwpkmAAAAhFuhPemi2NDCisCEsQY7jGkCgLCiK1w4cBwAlDIC1iLAjQwAwq8QhyVkuysc96vBoUsigFJGwFoEuJEBQPh58+pCGZaQzZlduV8NHjPsggoflCoC1iLBjQxAkEqhoJSL38iwBO5XwGAVY4VPonxXKr77CzJDwAoA8FWMBSWvUviNALInHxV5xVbh4813JfJe9EfACgBISbEVlBIphd8IIDuo5MoOb88T8l54EbACADJWCl2GUZgKcbKrQkxzqaKSCwgeASsKUlZu5tt+KO16/Ozrw69Lw8dlKYVA9hRCMEhLA8KqECe7KsQ0I/uouEhNIdwjkRkCVhSkfjfz80epesyr0g//KPKBVILPXY9Lh3dJE+ojrzvbA0wxMHiFEgzS0hAsJicZvEKc7KoQ04xI/hyf/2VyfVJxkZpCuUdi8AhYUbD63Mx/+EfS4f2SBgg+3zkstR+NC2qjweoXfxZ5/ejMwNMMDBbBIJicBAg3bzCZjeuTiovU5PMeSQtv8AhYUTz8gs/2o30D2Qn1Uv3NWds8GRaAoGV7chLyrdxgP5eG0Z+9tc8xpXKxNNDCGzwCVhSM+G42KY3j6Gw/25ra+7py+NmgNsvSzbAowADhl83ufWFEQSs32M9AcaMXVLAIWEtQIQZK3m42vuM4Eo1frRzuP641Psg9/Hrk3zTGxaaTYVGAAbIniHwtiO59WecZ6tC246ROtr5POmdC7CN++4GCVm6wn1GMCrFMicJDwFqCCjFQGn1xu0b/4fG+Czt+JP3wR5H/x0+eJEUKa+dMkL4YN+7jGZ8Cgl8we+rtyF98q239zVLjF/1/QBKZFmDCdqMIW3oweIU2O2UQ+VpBdO/zDHU4ueNNnTpRoaoZkYC1EPJ3AOHld1/PR5my0O5PyBwBa4kquJpe74y+XtkYj+oNcnsD3N7XT10bKRz2Orwr8m8GAWumwlb5ELb0YPAKcXbKXOdrgVfQpProrfihDo/OVNWodk2KVvC1Hj4TaYUFSgwVqNmRyn0913lvId6fkBkC1jygZmiQ4idVCsiA42S9AW18S6uUYBbizJ7rmuojLHJ5o0ilAFBwlSFFKFsFNWanHFjgFTTeirpEvTx6x+b38uY5AfQMAQoBFajZE8b7ekb3J09lYNuOkzq5990+H6m+5iMa/cDfp7a+LJf/0B8Bax5QM5SCZI+gCVDa42SlSLp603j8lejCiZF/MiwoBvEIi0wDmUIoABRCrXrQaSyE41QsMirIpdKCGl9R5+3lIfUfm++tWPPrGeJX0PJ5PxfXG5W8GKx0r89CuH9kW8a/OQzBWqq9UXp5KgNP7n1Xp450qmp8pSTp1OH3pM2/1OgHUty+9ykUiR6tmGOJjuvQaVM1YdmyPKUoMwSsWXD47shFOuG7qbf+0XLhI+BH0CTiHa/my5ueqpGRDDJZ4XIQXYh9H2GR5o0iG4FMGGta44UxWPPeODpeekmSNOxDH5IUTBrDfpwKQrqFoHT5taBmY2y+X88Qb17rTYO3Is5TEMvF9UYlL3Il5/ePEAR7Gf/mHARrvpVWqfRG8TYYxFcGPvN5VU3Q2XvmNZ5HI6ZynDxDM/x+gxRsZUiiRo9CRsCaBadffT3fSQi/wRT8AnwETVY0frFv5uctOCYqKMa3yA7yxtSn2/Krh1Q16szZN1O4UeQ6kMnHY0G8vzGdNARxU/HeOIZ96EN91klAGVK+AWUWCpcDtaAGVVEXnw95H/flTYO3Iu7Rmf1mU686f1zgeUqglbyJ7k9S/+A+Ht2qi1bgvSbi+QV73kBJCuTcy7hc4BOsZerkj78fKe9EW0CrRknV9aP7fmigvLT12chf77FJt9degoq9U4c7YoHtqcPvqWrC+wb+DXmoTC+mxrHAAlYze0TS9ZKOOOemR5eNkbRO0mRJr0m61TnXFlQaCkYAtfihe3agt+AXgu4SOecteA6i8Nuv2/L4SlVfMibQG0UmwvBYkHTTENRNpZhuHMUipa6mAxWCsh3AJmpBzTZvPuTXpdhbEef9fcWQlyeY1O/UkU61PpqkMrqzXdUNj2g0AWvBy3p3c7+yjre8560w8lYIeXs49Au8ctAim6h1Uepf6RUv/jdImQfZ7UdVNeqMJv3x5Mjr1meljt9IP4zuH7/eKN79PpjKwLjjVH30T6XNv4y9VTXhfaq+5iN9P+/dBzmq3CtWQbaw/qOk70iKv/MulfTvzrnVZrY0+npJgGkoDOlmcFLfi9+TmVSPOSmNOhPrgnrqSKf0zuHkBe5ENXjebWRDfMHPG1gly8SLibdF1lv4TaHg16/bcqIWgIFuFDnufhSGx4IMJg0D1TaX4hinYtWvq+n5o1Q95tXUu+QO4hrOO7+eIUpz8rkELa4FOdlI3P2pethjUoIJ73qderlJ2vGmRjORVcELpLu5p6xz6kjn2fvI4V2qrnlboz8yLfLaW2HkvXa8PRy8ZaVEXV+l7J6P3tZFL7/f4A2yvelLVAb163KbbgDqzfdSEZ+vecqkox/4+4HHtybKAwvh/hBigQWszrlfmtlkz+J5kj4a/f+PJG0VAWvEQMGcN6D1joX0ZCajG6o1uqE69rr1H3/dt1DlzRyOv6JTJyr61iafelvVk5Zp9MeTZDDZEJ8ZtD4b+XfSVZF/vRlgMUpU8IuXrCIhnrdA7d1nPucKGWj6wjhGNif8eoL41cJLoSzU92n5/uEfSYf3S4peU36FIL/gTfKpMAp+Mrl0pT35XBG2uPrNZ9B6U/gecYbB65MHbPuhtCv+Ge8+FTA+13T1JSOkzjfPNiAcfk/SSI2OGzvZh18PB7+Kb8k/QByM+GDR+8g/v9/gvXd40+dtRZb6B+LeRozBBKDpSBQsp1MmPWeCTh06odZnzo0tOnXiNVWNH3ySSr2y3Jxzwa08ErBujOsSfMI5Nyr6f5PU1vt6ILW1tW7NmjWBpTNTp3ZukyRVXdqY2uf3RQq4VdOitda9N7toJndq5zbJ9ZztD997oXoD1vjPD7B97/ve9Xe926WuU2VSWWXsOz0d72pIuVT1/qHRlbwd+bdq5NkVDx8XyZQkdR05oq7jbyX/vuc3nNr9stTdefZ9z/r67aM0ndq3Xz0dHRoybFhcmiKvM1nnQGnyvp8oDeXnjlH5+PGJP+9znJIaaL/5nCsJtxG3vn6/0XPcTr15WiqrVNX0GQnf7/d9z+eD0G8f9BYoUkyD33H0nkepnKvpnjv93vfZ7+l+PpX1JTyX4goNp97oiLx/3rDEr988HXmdJA/ItkTHrU/6U/iO93pJ9PkBzwXv+e/N93yut8GcJ5men+nmtX772fd+lI3jlOX3/Y677/o810bC73ivwXTTnGY+FkaDOfZBby/dfE5S32vW7x7qc9x8r6fBnNuebfqV3/pt03t/OPyeZEPOlhsyTHMq53K69zyvrOdraa7PWyaWJHW+q/Kh3SofFXePTPM3DZTXF0MeIUk33nhjk3Ou3w0kb5MuOeecmSWNls3sbkl3S9KFF16Ys3SFQlml1N159nWimp3O9rM3Wdcj2ZCB1+l6+n8+enMuV/8Toffi1ITEF0KsFr03YD3+Vp8LaUi5VD60O/lvKKuM/E1I7eJPV/m5Y9TlWTZk2DCVnzsmkO2lkoaejg51SbGANaEBjlMgvOdab61m/LGOv/l2d0bSFZ/e+O973/dyPeo5dfrs+RX9TnlVt8pHxJ2FAwTNaettVe4tTHrT3O/cjgRavcehvKJLXUPPpi3X55Gk/vu1p1vqee/suSJldpwSrc+zH/oFnMde7rvOIdFKr9732zx5SPy6C5T3mu53Lnjyta5XmtX11nvSm5EgrqezR0Mqs3tN+6apGCW4Znu61Cdfia8cDFyClpeud7vU1X72HtjT2aMh5XHXWOfpPpXEvvzysSKQqJA/4HH0ngdS/3ywu3Pgfd7vMz75nKfsI2ng+3Rva2Ovtv2JP5dN3m0mCmDj7/PevP7Me33XZ0PSO1c9Eh/X9589ron2ibeMmIv9lkXl48f3P2+9x2EQ13CiysiYIs8jct3C2iLpo865N8zsPElbnXN1futpbGx027ZtCyydmeqdJWzS5uaE7ycb1N+nG5oU627RO9ah9/1+3QDeOazqSe/Fuv22PhrpsjLpyU2J0xftvjTpjyem9PlEaejHJ83e99Ndv+/28yDTNHvf7/d6EMfJNw29MxNHb6at//hrqXJ47Fzt9/lEXXekWFftft+/JtIFctIdtQnf92r70zmRh3PHT27yclNkMoXoOmLpTTZDtM+Ybu9+9K6v3/Xq3UfRrvGx73u7q3tk43ryu+ZPvdykqvGVZ/d7mr/R97V3fYn2g9R3P/udz2nmCZny3X4K38k0jYmu6fiZLaWBH0bfO6N1sklf+t07BpGmdN/3+3y/1z73w1SOU0r3zLhrtu2X+3Ty4MizLdmez6d7P/OT6rnV51h679uP7Ius485pZ7+UST7mEcbug6nc804dd6r6YLT10e9895wHCfeRz/3J+xlJA+ZzfvfUtPdBgtfeIScD7YNBlZU891BvXu+9p6Wb16f7mxL9hsHk5/Gynq8FUCb1u4bTTWO/cnmic3tCvTR3daZJD5SZhaKF9aeSviBpdfTfp3K8/bzIdFB/vzFzh05I50zV6GTjB7z8xkSEAA+GVzDHyW9GUC/vuBBvcOg3uYLP+kc3VGv0hFZpwvHYstbfnuk7PmagMbtS2mO6E41DPHX4vbPPWetsV3XDJI3+iyTjcxIFyPEGM2bPZzxo/yn8z0Rmg+7l98ikdCctG+j5ntmcsTY+jVL+x7QGPab0nAmqmjEh5UKO330hGxPC5CSvzXCG0JQnw4rmGaP1Rxp9eFcsX2k9fCYrjxDL1IDBlt9zujN8Fnkox9onmD8j4uwzfqvOHd43oPXLM+IrNxPdOwaagTe6zbQeoZfuPTVNaY8hH4xkE6+lUfYYcGK2BAZ61FxQ5b3QPS0j2zzXU6ziLnr8Th13qjq3eCYvDfKxNj9WZIKlsWZ2UNIKRQLVx8xsgaRWScVz5vjcoDN9pEWun53p1a+29vDrkZnulGSClTQLfjwYPiApzAgaL3Gt/BfOZvLpThDhlajA5XfD7xfc7epfSBnouZIe1dd8pM909KdOVEit79PohJ+W/+QOg3mUkN/M4N4p/KX+QXf8zfidM1L7uZIi1+GpExWquijBMILBBrTZ4D32aU5UE0iLUYZBQbb5TfaTDYHntX4zhPa7VySYnMvz+AffybD8jlmymVRj28vD5FeJKp28/AKpNModiZ5H7RV4gd57vfk949cb0KaSZwxUcZfoPpNuwJnmPTVducgDMq20yjSozkVQHoZH6qVkoGvYb6JDz/V08uDISJAa7Q1e9cEZkf0Qtt88SEHOEnxbkrc+HtQ288ZvZlavZAXwEOtXW3vcSRqZvJA/iIJfITyncqAbfjG0CgdeK58o+PO74XuDO7/Cql8rr2c6+rw9C807M3iigDJZ0O29uXvGLFVN8Hwm0xkPs8F77L0VDT5OPvq6Th3pjLU6+z6uKxG/ZyCWiEDzWr8ZQlPR7/m2PsME/FqMEs2kGi/PFRWDkma5wy8gyFmB3jPbbJ+WNm+LkCegbfvTOTr5i1+frSTsbFd1w/vPlkPSfcZwNA2lJtNKq0yD6lwE5WF4pJ4vv8o973CkRL25PNdT1YRwDaXLprxNulRUUqkpjedXAA+JRF02+rXyelvWgnzgfZ7lorteGOS7NV+SpzvfIAurhSTdrtXp3vDDOCxgEHle1fjKs+Os/B7XlajlrhQfn5VvqXY/jL93eAPMTO+RiQKVMEqnW3+a5Y7RF7dr9B8eT/p+v27UUsZd9vu15MVVOEkJWtq8LUKefOpk6/sivUeic9n06x1TDPeCHCmEBoKi51e5N+mqvtdgsortEkHAmi8DFcBDICfjKApMLmoFof4F05BW6PTh7dYjpVfYC2NAGbR0n6PnDWz8ug8m4i0AlMJ+LkSFEmBmUzbGRnrH7UrJn3XuJ9GzPHvTmeJ16zcWfzAVb/FjwkPZaoaCEMp5U/zuiQkqtk8dd4GPBQ4LAtZcKICHxXsRnBWugp9oIOgHgmdbokKlt3teAeYBQUs0JtVrwHPXu9+94+FKoNcHClv/vHqA+QL8+FXqeStrvFKZbM6br/nM2J7KWHwgV+Kvt46XXpIkDfvQhyQVSKOMpyKvethjUtw9tCB+QwYIWHMhZBN7oHgVzEQDaQjj4xn6SNQa5B2f6W39Iw/oN47Ky/fcLcVWaYRGphWDWc+r/bpeZ7o+qX++5m21TTSOtgTHiCN8vNfbsA99KFzlCKVf1im1hiUC1qCkMWspkC0FMdFAmkL5eAY/3mDU2/pXIvwK9ak8XzDV9afSHSqU3cByIBePkMiE9zwJYxrjZSPYLMi82pOvtbXN0MnW90n/eW5kweFzVX3JyeSTMUJS+K/HYlQIwV1BlnVyiIA1CFkYi1IKGVop/EZkRygmgkoHk38E3to/mHH2pfj4rLDPR5AoLWFLo1dBBpsp8G019uRrJ2//vE4d2q+qqZEZyk8d6ZQ639ToIpsUJpvDbMJ+PYZJKZYRC66sk0MErFmSzbEopZChlcJvLBZhvGlke5xuGH9joQu6UD/YGvNSmx0z7C0LYU9fqRhsBVOfAvZNntmdczALd9BzNmS74o3zPTWUEeFFwJoFZGjpK4XfWAzCeNPI9vUWxt+ICCoSgOSyGaxlpYIpx+PKczFnQ7G2pgct07ybMiK8CFizgAwNqSq0AngYbxrZvt7C+BsLRZDnMxUJKCS5HodbjBPspStfZa9Cu4/nGnk3gkDACuQImTiKSdDnMxUJKBT5GIdbKhXlYQsOuY/7I+9GEAhYgRwhE0cx4XwGIrgWghHG4DCMx9rbui+F7NFvQBYQsALIu6Anzsi1Un18CgBkSxDBYaE9QslPogC+FLuHo/gRsALIq2Ici1WKj09BRNi6MKJ0cO4NrBAfoeQnUVBfrN3DSxHX9FkErCWCkx5hlY2xWGE8v0vt8SlhlO+JcAq9MIzCkYtzr9B7joSxOy+QDPeTvghYSwAnPYoZ5zcSCcNEOECu5OLco+cIkDvcT/oiYC0BnPQoZpzfSITzAsi+sPccCWNvGwCZI2ANSClkmqXwGwFkD3kGcoVzrfTQ2wYoXgSsASiFTLMUfiOA7CHPKB5hDwY510oTvSqA4kXAGoBcZJr5LjBwYwCKS9ATFJFnFIdCCAY51/In32UTRGT6qDiOI8KGgLUAFUKBAUB68llAKMbHPSAY6QaDhT6zLFJH2SQcvPu846WX1PHSS7Hr0O8a5DgijAhYCxC1x0hH0IEQNbGZy0UBYaDjRJ6CoDCzbOkgHwkH73HwVhr5XYMcR4QRAStQxFIJhDIJOKmJzY6gCwgcJ+RSojwlzDPLAsWMABTFgIAVKGJ+N6pMAxluhIWB44RcoXIEAJBtBKxACSOQAZBN5CkAgGwjYAUAAACAHGIOkNQRsAIAAOQZhVegdDB8Ij0ErACQoaCfYQqguFF4BUoLwyfSQ8AKABngGaYAMkXhFQCSI2AFgAxQ0AQAAAgOASsQIoxhAgCEAUMdAIQFASsQEoxhAgCEAUMdAIQJASsQEnQtBQCEAfcjAGEyJN8JAAAAAAAgEQJWAAAAAEAoEbACAAAAAEKJgBUAAAAAEEoErAAAAACAUGKWYAAAAACIin8OMc8gzj8CVgAAAABQ/+cQ8wzi/CNgBQAAAADxHOIwYgwrAAAAACCUCFgBAAAAAKFEwAoAAAAACCUCVgAAAABAKBGwAgAAAABCiYAVAAAAABBKBKwAAAAAgFAiYAUAAAAAhBIBKwAAAAAglMrznQAA8Dq1f79ab/987P9VU6fmOUUAAADIBwJWAKFSff31fV5XTZ3abxkAAABKAwErgFAZ/dlbNfqzt+Y7GQAAAAgBxrACAAAAAEKJgBUAAAAAEEoErAAAAACAUCJgBQAAAACEEgErAAAAACCUCFgBAAAAAKFEwAoAAAAACCUCVgAAAABAKBGwAgAAAABCiYAVAAAAABBKBKwAAAAAgFAiYAUAAAAAhBIBKwAAAAAglAhYAQAAAAChRMAKAAAAAAglAlYAAAAAQCgRsAIAAAAAQomAFQAAAAAQSgSsAAAAAIBQImAFAAAAAIQSASsAAAAAIJTK87FRM3tN0juSuiV1Oeca85EOAAAAAEB45SVgjfqYc+5YHrcPAAAAAAgxugQDAAAAAEIpXwGrk7TJzJrM7O5EHzCzu81sm5ltO3r0aI6TBwAAAADIt3wFrFc552ZJmivpv5rZR7wfcM591znX6JxrHDduXO5TCAAAAADIq7wErM65Q9F/j0h6QtJl+UgHAAAAACC8ch6wmtlwMzun9/+SrpW0O9fpAAAAAACEWz5mCX6/pCfMrHf7jzrnfpGHdAAAAAAAQiznAatz7jeSLs31dgEAAAAAhYXH2gAAAAAAQomAFQAAAAAQSgSsAAAAAIBQImAFAAAAAIQSASsAAAAAIJQIWAEAAAAAoUTACgAAAAAIJQJWAAAAAEAoEbACAAAAAEKJgBUAAAAAEEoErAAAAACAUCJgBQAAAACEEgErAAAAACCUCFgBAAAAAKFEwAoAAAAACCUCVgAAAABAKBGwAgAAAABCiYAVAAAAABBKBKwAAAAAgFAiYAUAAAAAhBIBKwAAAAAglAhYAQAAAAChRMAKAAAAAAglAlYAAAAAQCgRsAIAAAAAQomAFQAAAAAQSgSsAAAAAIBQImAFAAAAAIQSASsAAAAAIJQIWAEAAAAAoUTACgAAAAAIJQJWAAAAAEAoEbACAAAAAEKJgBUAAAAAEEoErAAAAACAUCJgBQAAAACEEgErAAAAACCUCFgBAAAAAKFEwAoAAAAACCUCVgAAAABAKBGwAgAAAABCiYAVAAAAABBKBKwAAAAAgFAiYAUAAAAAhBIBKwAAAAAglAhYAQAAAAChRMAKAAAAAAglAlYAAAAAQCgRsAIAAAAAQomAFQAAAAAQSgSsAAAAAIBQImAFAAAAAIQSASsAAAAAIJQIWAEAAAAAoUTACgAAAAAIJQJWAAAAAEAoEbACAAAAAEKJgBUAAAAAEEoErAAAAACAUCJgBQAAAACEEgErAAAAACCUCFgBAAAAAKFEwAoAAAAACCUCVgAAAABAKBGwAgAAAABCiYAVAAAAABBKBKwAAAAAgFAiYAUAAAAAhBIBKwAAAAAglAhYAQAAAAChRMAKAAAAAAglAlYAAAAAQCjlJWA1s0+aWYuZvWJmS/ORBgAAAABAuOU8YDWzMkn/U9JcSZdIus3MLsl1OgAAAAAA4ZaPFtbLJL3inPuNc65T0k8kzctDOgAAAAAAIZaPgPV8Sb+Le30wugwAAAAAgJjyfCcgGTO7W9Ld0ZfvmllLPtOTgrGSjuU7EeiDYxJOHJdw4riEE8clnDgu4cRxCSeOSziF8bhMSrQwHwHrIUkXxL2uiS7rwzn3XUnfzVWiMmVm25xzjflOB87imIQTxyWcOC7hxHEJJ45LOHFcwonjEk6FdFzy0SX4JUm1ZnaRmVVKmi/pp3lIBwAAAAAgxHLewuqc6zKzRZL+VVKZpEecc3tynQ4AAAAAQLjlZQyrc+5pSU/nY9sBKpjuyyWEYxJOHJdw4riEE8clnDgu4cRxCSeOSzgVzHEx51y+0wAAAAAAQD/5GMMKAAAAAIAvAtYMmdknzazFzF4xs6X5Tk+pMrMLzGyLme01sz1m9qfR5Q+a2SEz2xH9uy7faS01Zvaame2K7v9t0WVjzGyzmf06+u/ofKezlJhZXdw1scPMTprZn3G95J6ZPWJmR8xsd9yyhNeHRfxD9H7zspnNyl/Ki1uS4/K3ZrY/uu+fMLNR0eWTzey9uOvm/81bwotckuOSNN8ys7+IXi8tZvaJ/KS6+CU5LuvijslrZrYjupzrJUcGKBsX3D2GLsEZMLMySQckXSPpoCIzIN/mnNub14SVIDM7T9J5zrntZnaOpCZJN0m6VdK7zrm/y2f6SpmZvSap0Tl3LG7ZNyW95ZxbHa3oGe2cW5KvNJayaD52SNLlkr4orpecMrOPSHpX0j8556ZHlyW8PqIF8f8m6TpFjtffO+cuz1fai1mS43KtpGeik0f+jSRFj8tkSRt7P4fgJDkuDypBvmVml0j6saTLJE2U9G+SpjjnunOa6BKQ6Lh43v+WpLedc3/N9ZI7A5SN71CB3WNoYc3MZZJecc79xjnXKeknkublOU0lyTn3hnNue/T/70jaJ+n8/KYKA5gn6UfR//9IkQwU+fFxSf/pnGvNd0JKkXPul5Le8ixOdn3MU6RA6JxzL0gaFS2QIMsSHRfn3CbnXFf05QuKPEceOZTkeklmnqSfOOdOO+delfSKIuU2ZNlAx8XMTJHGgx/nNFEYqGxccPcYAtbMnC/pd3GvD4ogKe+itXczJf0qumhRtGvDI3Q9zQsnaZOZNZnZ3dFl73fOvRH9/2FJ789P0qDIs7DjCxJcL/mX7PrgnhMed0r6edzri8ys2cz+r5nNyVeiSliifIvrJRzmSHrTOffruGVcLznmKRsX3D2GgBVFxcxGSNog6c+ccyclPSzpYkkNkt6Q9K38pa5kXeWcmyVprqT/Gu06FOMi4xIYm5AHZlYp6UZJ66OLuF5ChusjfMzsLyV1Sfrn6KI3JF3onJsp6cuSHjWz6nylrwSRb4XbbepbKcr1kmMJysYxhXKPIWDNzCFJF8S9rokuQx6YWYUiF+Q/O+f+jyQ55950znU753okfU90B8o559yh6L9HJD2hyDF4s7ebSfTfI/lLYUmbK2m7c+5NieslRJJdH9xz8szM7pB0vaTPRQt6inY5PR79f5Ok/5Q0JW+JLDED5FtcL3lmZuWSPi1pXe8yrpfcSlQ2VgHeYwhYM/OSpFozuyjaUjFf0k/znKaSFB0j8QNJ+5xza+KWx/e9/5Sk3d7vIjhmNjw60F9mNlzStYocg59K+kL0Y1+Q9FR+Uljy+tR8c72ERrLr46eSPh+dyfEKRSYxeSPRCpB9ZvZJSQ9IutE51xG3fFx08jKZ2e9JqpX0m/yksvQMkG/9VNJ8MxtqZhcpclxezHX6StzVkvY75w72LuB6yZ1kZWMV4D2mPN8JKGTRmQIXSfpXSWWSHnHO7clzskrV70u6XdKu3qnTJS2TdJuZNSjS3eE1SffkI3El7P2SnojkmSqX9Khz7hdm9pKkx8xsgaRWRSZkQA5FKxCuUd9r4ptcL7llZj+W9FFJY83soKQVklYr8fXxtCKzN74iqUORWZ0RgCTH5S8kDZW0OZqnveCc+xNJH5H012Z2RlKPpD9xzqU6MRDSkOS4fDRRvuWc22Nmj0naq0gX7v/KDMHBSHRcnHM/UP85EiSul1xKVjYuuHsMj7UBAAAAAIQSXYIBAAAAAKFEwAoAAAAACCUCVgAAAABAKBGwAgAAAABCiYAVAAAAABBKBKwAAKTJzLrNbEfc32Qzey763mQz2x39f4OZXZeF7f2lme0xs5ej27s8uvzPzGxYpusHACCseA4rAADpe8851+BZdmWCzzVIalTk+XYpMbNy51xX3OsPS7pe0izn3GkzGyupMvr2n0n634o8Mw8AgKJDCysAAFlgZu96XldK+mtJn422in7WzIab2SNm9qKZNZvZvOhn7zCzn5rZM5L+3bPq8yQdc86dliTn3DHn3Otm9iVJEyVtMbMt0fVca2bPm9l2M1tvZiOiy18zs2+a2a7otj8Q6M4AACBLCFgBAEjf++K6Az+R6APOuU5JyyWtc841OOfWSfpLSc845y6T9DFJf2tmw6NfmSXpZufcH3hWtUnSBWZ2wMweMrM/iK7/HyS9LuljzrmPRVtevyrpaufcLEnbJH05bj1vO+fqJX1H0n/PfBcAABA8ugQDAJC+RF2CU3GtpBvNbHH0dZWkC6P/3+yce8v7Befcu2Y2W9IcRYLcdWa21Dn3j56PXiHpEkn/YWZSpNvw83Hv/zju328PIu0AAOQcASsAALljkj7jnGvpszAyiVJ7si8557olbZW01cx2SfqCpH9MsO7Nzrnbkq0myf8BAAgtugQDABCcdySdE/f6XyX9N4s2gZrZTL8VmFmdmdXGLWqQ1Jpg/S9I+v3e8anR8bJT4r732bh/41teAQAILVpYAQAIzhZJS81sh6RvSPqaIuNHXzazIZJeVWQG4IGMkPQ/zGyUpC5Jr0i6O/redyX9wsxej45jvUPSj81saPT9r0o6EP3/aDN7WdJpSclaYQEACBVzjl5BAAAUMzN7TVKjc+5YvtMCAEA66BIMAAAAAAglWlgBAAAAAKFECysAAAAAIJQIWAEAAAAAoUTACgAAAAAIJQJWAAAAAEAoEbACAAAAAEKJgBUAAAAAEEr/PyKpRN33I7+0AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1152x648 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_x():\n",
    "    fig = plt.figure(figsize=(16, 9))\n",
    "    plt.step(range(len(measurements[0])), dxt, label='$estimateVx$')\n",
    "    plt.step(range(len(measurements[0])), dyt, label='$estimateVy$')\n",
    "\n",
    "    plt.step(range(len(measurements[0])),\n",
    "             measurements[0], label='$measurementVx$')\n",
    "    plt.step(range(len(measurements[0])),\n",
    "             measurements[1], label='$measurementVy$')\n",
    "\n",
    "    plt.axhline(vx, color='#999999', label='$trueVx$')\n",
    "    plt.axhline(vy, color='#999999', label='$trueVy$')\n",
    "\n",
    "    plt.xlabel('Filter Step')\n",
    "    plt.title('Estimate (Elements from State Vector $x$)')\n",
    "    plt.legend(loc='best', prop={'size': 11})\n",
    "    plt.ylim([0, 30])\n",
    "    plt.ylabel('Velocity')\n",
    "\n",
    "\n",
    "plot_x()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "位置的估计结果："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7sAAAOjCAYAAAB6HxMAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABMxElEQVR4nO39f3Tdd33n+74+jrfsTUKoIS4XSLBoCiWkpJEtuDC0HX6EFJjOoc0KhbRQ6MmaQANM69Ob09Zz77Rz74RT7oW6cMowpIRJCowZnNKBQ8lMcZthVltKkU3qNuFXAnZJSEGAgbhJLBF97h/aNpIs/5AsaW999HislWXpu7+SPmZXoU/e3+/nW2qtAQAAgJas6/cCAAAAYKmJXQAAAJojdgEAAGiO2AUAAKA5YhcAAIDmiF0AAACaI3YBYJUrpewopbz7JK//QinlT1dyTQDQb8VzdgFg5ZVSDiR5bJKHk/xTkluTvKHWevgMv+9wki8n6dRav3eGywSAVctkFwD651/WWs9JsjXJaJL/Z5/XAwDNELsA0Ge11nszPdn90VLK/1JKuaOU8u1Syv8opVx09LxSyq+XUu4tpdxfSvl8KeUFveO/XUp5X++0/9n789ullMOllGeXUl5TSvmLGd/nn5VSPl1K+U7vz38247X/UUr5/5RS/rL3c/60lHLe8v+nAABLS+wCQJ+VUi5I8pIk9yfZleRXk2xO8rEk/1cpZaiU8iNJ3pDkGbXWRyb5qSQH5vl2P9n78wdqrefUWj8552c9OsmfJHl7ksck+d0kf1JKecyM034+yS8l+cEkQ0n+H0vw1wSAFSV2AaB//msp5dtJ/iLJJ5LcmeRPaq0fr7VOJnlLkm6Sf5bpe3s3JHlaKaVTaz1Qa717ET/zXyT5Yq31vbXW79VadyX5XJJ/OeOc/1Rr/UKt9cEkH0xy6SL/fgDQN2IXAPrnZ2qtP1Br3VJrvTbJ45McPPpirXUqyVeSPKHWelemJ76/neTrpZQPlFIev4ifOetn9BxM8oQZn//jjI8fSHLOIn4OAPSV2AWAwfHVJFuOflJKKUkuSHJvktRa/3Ot9cd759Qkb57ne5zqMQuzfkbPE4/+DABohdgFgMHxwST/opTyglJKJ8mvJTmS5K9KKT9SSnl+KWVDkoeSPJhkap7vMd47/kMn+BkfS/KUUsrPl1LWl1JenuRpST661H8ZAOgnsQsAA6LW+vkkr0zyfyb5Rqbvo/2XtdaJTN+v+zu94/+Y6c2jfnOe7/FAkuuT/GVvR+dnzXn9m0l+OtMh/c0k/3uSn661fmO5/l4A0A+l1lNd7QQAAACri8kuAAAAzRG7AAAANEfsAgAA0ByxCwAAQHPELgAAAM1Z3+8FLKfzzjuvDg8P93sZAAAALIO9e/d+o9a6eb7Xmo7d4eHhjI2N9XsZAAAALINSysETveYyZgAAAJojdgEAAGiO2AUAAKA5Td+zCwAA0JrJycncc889eeihh/q9lBWzcePGnH/++el0Oqf9NWIXAABgFbnnnnvyyEc+MsPDwyml9Hs5y67Wmm9+85u555578qQnPem0v85lzAAAAKvIQw89lMc85jFrInSTpJSSxzzmMQueZItdAACAVWathO5Ri/n7il0AAAAW7Prrr8/FF1+cSy65JJdeemk+9alP5fd+7/fywAMPnPJrT/e8MyF2AQAAWJBPfvKT+ehHP5p9+/Zl//792bNnTy644AKxCwAAwMoZHx/Ppz/96YyPjy/J97vvvvty3nnnZcOGDUmS8847L7fccku++tWv5nnPe16e97znJUl++Zd/OaOjo7n44ovzW7/1W0mSt7/97ced96d/+qd59rOfna1bt+ZlL3tZDh8+fMZrLLXWM/4mg2p0dLSOjY31exkAAABL5rOf/Wwuuuii0z5/165dufrqqzM0NJSJiYnceOONueqqq85oDYcPH86P//iP54EHHshll12Wl7/85fnn//yfZ3h4OGNjYznvvPOSJN/61rfy6Ec/Og8//HBe8IIX5O1vf3suueSSWed94xvfyBVXXJFbb701Z599dt785jfnyJEj+bf/9t+e8u9dStlbax2db40muwAAAI0aHx/P1VdfnQcffDDf+c538uCDD+bqq68+4wnvOeeck7179+aGG27I5s2b8/KXvzw33XTTced98IMfzNatWzMyMpI77rgjd95553Hn/PVf/3XuvPPOPOc5z8mll16am2++OQcPHjyj9SWeswsAANCsAwcOZGhoKA8++OCxY51OJwcOHMjmzZvP6HufddZZee5zn5vnPve5efrTn56bb7551utf/vKX85a3vCWf/vSns2nTprzmNa+Z9/FBtda88IUvzK5du85oPXOZ7AIAADRqeHg4ExMTs45NTk5meHj4jL7v5z//+Xzxi1889vntt9+eLVu25JGPfGTuv//+JMl3v/vdnH322XnUox6Vr33ta7n11luPnT/zvGc961n5y7/8y9x1111Jkn/6p3/KF77whTNaX2KyCwAA0KzNmzfnxhtvzNVXX51Op5PJycnceOONZzzVPXz4cN74xjfm29/+dtavX58f/uEfzg033JBdu3blRS96UR7/+Mfntttuy8jISJ761KfmggsuyHOe85xjX3/NNdfMOu+mm27KVVddlSNHjiRJ/v2///d5ylOeckZrtEEVAADAKrLQDaqS6Xt3Dxw4kOHh4TMO3X5Z6AZVJrsAAACN27x586qN3MVyzy4AAADNEbsAAAA0p2+xW0rZWEr5m1LK35ZS7iil/Lve8SeVUj5VSrmrlPJfSilDveMbep/f1Xt9uF9rBwAAYLD1c7J7JMnza60/luTSJC8qpTwryZuT7Ky1/nCSQ0mu7p1/dZJDveM7e+cBAADAcfoWu3Xa4d6nnd4/Ncnzk9zSO35zkp/pffzS3ufpvf6CUkpZmdUCAACwmvT1nt1SylmllNuTfD3Jx5PcneTbtdbv9U65J8kTeh8/IclXkqT3+neSPGZFFwwAALCK3P2tu3Ptn1ybc/+Pc7Pu363Luf/Hubn2T67N3d+6+4y/9/XXX5+LL744l1xySS699NJ86lOfyu/93u/lgQceWPD3uummm/LVr371jNc0U19jt9b6cK310iTnJ3lmkqee6fcspVxTShkrpYyNj4+f6bcDAABYlW794q255D9eknfve3fun7g/NTX3T9yfd+97dy75j5fk1i/euujv/clPfjIf/ehHs2/fvuzfvz979uzJBRdcsKjYffjhh9uL3aNqrd9OcluSZyf5gVLK0ef/np/k3t7H9ya5IEl6rz8qyTfn+V431FpHa62ja+05UgAAAMn0RPfK3VfmgckHMjk1Oeu1yanJPDD5QK7cfeWiJ7z33XdfzjvvvGzYsCFJct555+WWW27JV7/61Tzvec/L8573vCTJL//yL2d0dDQXX3xxfuu3fuvY1w8PD+fXf/3Xs3Xr1uzatStjY2P5hV/4hVx66aV58MEHF/m3nq2fuzFvLqX8QO/jbpIXJvlspqP3yt5pr07y4d7HH+l9nt7rf15rrSu2YAAAgFXirZ98ayYfnjzpOZMPT2bnX+9c1Pe//PLL85WvfCVPecpTcu211+YTn/hE/vW//td5/OMfn9tuuy233XZbkulLncfGxrJ///584hOfyP79+499j8c85jHZt29fXvnKV2Z0dDTvf//7c/vtt6fb7S5qTXP1c7L7uCS3lVL2J/l0ko/XWj+a5NeT/G+llLsyfU/ujb3zb0zymN7x/y3Jb/RhzQAAAAPvffvfd9xEd67Jqcm8d/97F/X9zznnnOzduzc33HBDNm/enJe//OW56aabjjvvgx/8YLZu3ZqRkZHccccdufPOO4+99vKXv3xRP/t0rT/1Kcuj1ro/ycg8x7+U6ft35x5/KMnLVmBpAAAAq9rhicOnPmkB583nrLPOynOf+9w897nPzdOf/vTcfPPNs17/8pe/nLe85S359Kc/nU2bNuU1r3lNHnrooWOvn3322Yv+2adjIO7ZBQAAYOmcM3TOkp431+c///l88YtfPPb57bffni1btuSRj3xk7r///iTJd7/73Zx99tl51KMela997Wu59dYTb4g18+uWSt8muwAAACyPV17yyrx737tPeilzZ10nr7rkVYv6/ocPH84b3/jGfPvb38769evzwz/8w7nhhhuya9euvOhFLzp27+7IyEie+tSn5oILLshznvOcE36/17zmNXnd616XbrebT37yk0ty325peY+n0dHROjY21u9lAAAALJnPfvazueiii056zt3fujuX/MdL8sDkiR8D9IjOI7L/dftz4aMvXOolLov5/t6llL211tH5zncZMwAAQGMufPSFueVlt+QRnUeks64z67XOuk4e0XlEbnnZLasmdBdD7AIAADToxU9+cfa/bn+u2XZNzt1wbtaVdTl3w7m5Zts12f+6/Xnxk1/c7yUuK/fsAgAANOrCR1+Y33/J7+f3X/L7/V7KijPZBQAAoDliFwAAgOaIXQAAAJojdgEAAFp1993Jtdcm556brFs3/ee1104fP0Nf+9rX8vM///P5oR/6oWzbti3Pfvaz88d//McL/j4HDhzIj/7oj57xeuYSuwAAAC269dbkkkuSd787uf/+pNbpP9/97unjt9666G9da83P/MzP5Cd/8ifzpS99KXv37s0HPvCB3HPPPUv4FzgzYhcAAKA1d9+dXHll8sADyeTk7NcmJ6ePX3nloie8f/7nf56hoaG87nWvO3Zsy5YteeMb35iHHnoov/RLv5SnP/3pGRkZyW23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",
      "text/plain": [
       "<Figure size 1152x1152 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_xy():\n",
    "    fig = plt.figure(figsize=(16, 16))\n",
    "    plt.scatter(xt, yt, s=20, label='State', c='k')\n",
    "    plt.scatter(xt[0], yt[0], s=100, label='Start', c='g')\n",
    "    plt.scatter(xt[-1], yt[-1], s=100, label='Goal', c='r')\n",
    "\n",
    "    plt.xlabel('X')\n",
    "    plt.ylabel('Y')\n",
    "    plt.title('Position')\n",
    "    plt.legend(loc='best')\n",
    "    plt.axis('equal')\n",
    "\n",
    "\n",
    "plot_xy()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "gobigger",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.16"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "0c7484b3574347463e16b31029466871583b0d4e5c4ad861e8848f2d3746b4de"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
